刷新 Token 的实现流程
OAuth 2.0 允许用户自动更新令牌。具体方法是,授权服务器发行令牌的时候,一次性发行两个令牌,一个用于获取数据,另一个用于获取新 的令牌(refresh token 字段)。令牌到期前,用户使用 refresh token 发一个请求,去更新令牌。
这里我们来看一下刷新 Token 的实现流程。
一般是用户通过账号和密码登陆系统,用户就可以正常操作了,但是登陆授权生成的 Token 是有时效性的,如果 Token 过期了就不能继续访问了,这时为了避免用户频繁的登陆授权,就采用了定期刷新 Token 来保持用户处于登陆状态,这对于用户来说是无感的。
1、通过账号密码登陆后,会获取到 token(授权令牌)、refresh_token(用于刷新 token 的令牌)、expire_time(令牌 token 的时效)这三个信息,将这三个连同登陆的时间点(login_time)保存下来以供后续刷新 token 使用。
2、在以后的操作过程中,每次请求接口时,都检查当前时间 current_time 与登陆时间 login_time 的时间差与时效 expire_time 的大小,如果 current_time - login_time 大于 expire_time 亦或者某个阀值,则就使用 refresh_token 去重新获取 token,来更新本地存储的 token 以达到刷新的目的。
注意一点是,refresh_token 的失效性要比 token 的时效性长很多,这样可以实现 token 的一直刷新了;但是如果用户长时间为操作,那么 refresh_token 也过期了,就会强制用户登出。